package com.lingshu.app.model.register;

import androidx.databinding.BaseObservable;
import androidx.databinding.Bindable;

import com.google.gson.annotations.JsonAdapter;
import com.lingshu.app.BR;
import com.lingshu.app.model.adapters.DateAdapter;
import com.lingshu.app.model.enums.ImagePart;
import com.lingshu.app.model.enums.ScreeningType;

import java.util.Date;

/**
 * @author 于定金
 * @version 1.0
 * @Date 2024/1/8 15:15
 * @Description
 */
public class RegisterImageResponse extends BaseObservable {
    private Long id;
    private Long patientId;
    private ScreeningType screeningType;
    @JsonAdapter(DateAdapter.class)
    private Date inspectTime;
    private Long registerId;
    private String orginRegisterId;
    private ImagePart parts;
    private String sopInstanceUID;
    private Integer numberOfFrames;
    private Integer frameCount;
    private Double pixelSpacing;
    private Integer storageType;
    private String storagePath;
    private String zipStoragePath;
    private String aiResultStoragePath;
    private Integer mediaType;
    private Integer uploadType;
    private Boolean isSendToAi;
    private String creater;
    @JsonAdapter(DateAdapter.class)
    private Date createTime;
    private String updater;
    @JsonAdapter(DateAdapter.class)
    private Date updateTime;
    private Boolean isDeleted;
    private Boolean canPlay = false;
    private Boolean canDownload = true;
    private Boolean showLoading = false;
    private Boolean isSelected = false;
    private String localPath;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public Long getPatientId() {
        return patientId;
    }

    public void setPatientId(Long patientId) {
        this.patientId = patientId;
    }

    public ScreeningType getScreeningType() {
        return screeningType;
    }

    public void setScreeningType(ScreeningType screeningType) {
        this.screeningType = screeningType;
    }

    public Date getInspectTime() {
        return inspectTime;
    }

    public void setInspectTime(Date inspectTime) {
        this.inspectTime = inspectTime;
    }

    public Long getRegisterId() {
        return registerId;
    }

    public void setRegisterId(Long registerId) {
        this.registerId = registerId;
    }

    public String getOrginRegisterId() {
        return orginRegisterId;
    }

    public void setOrginRegisterId(String orginRegisterId) {
        this.orginRegisterId = orginRegisterId;
    }

    public ImagePart getParts() {
        return parts;
    }

    public void setParts(ImagePart parts) {
        this.parts = parts;
    }

    public String getSopInstanceUID() {
        return sopInstanceUID;
    }

    public void setSopInstanceUID(String sopInstanceUID) {
        this.sopInstanceUID = sopInstanceUID;
    }

    public Integer getNumberOfFrames() {
        return numberOfFrames;
    }

    public void setNumberOfFrames(Integer numberOfFrames) {
        this.numberOfFrames = numberOfFrames;
    }

    public Integer getFrameCount() {
        return frameCount;
    }

    public void setFrameCount(Integer frameCount) {
        this.frameCount = frameCount;
    }

    public Double getPixelSpacing() {
        return pixelSpacing;
    }

    public void setPixelSpacing(Double pixelSpacing) {
        this.pixelSpacing = pixelSpacing;
    }

    public Integer getStorageType() {
        return storageType;
    }

    public void setStorageType(int storageType) {
        this.storageType = storageType;
    }

    public String getStoragePath() {
        return storagePath;
    }

    public void setStoragePath(String storagePath) {
        this.storagePath = storagePath;
    }

    public String getZipStoragePath() {
        return zipStoragePath;
    }

    public void setZipStoragePath(String zipStoragePath) {
        this.zipStoragePath = zipStoragePath;
    }

    public String getAiResultStoragePath() {
        return aiResultStoragePath;
    }

    public void setAiResultStoragePath(String aiResultStoragePath) {
        this.aiResultStoragePath = aiResultStoragePath;
    }

    public Integer getMediaType() {
        return mediaType;
    }

    public void setMediaType(Integer mediaType) {
        this.mediaType = mediaType;
    }

    public Integer getUploadType() {
        return uploadType;
    }

    public void setUploadType(Integer uploadType) {
        this.uploadType = uploadType;
    }

    public Boolean isSendToAi() {
        return isSendToAi;
    }

    public void setSendToAi(Boolean sendToAi) {
        isSendToAi = sendToAi;
    }

    public String getCreater() {
        return creater;
    }

    public void setCreater(String creater) {
        this.creater = creater;
    }

    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    public String getUpdater() {
        return updater;
    }

    public void setUpdater(String updater) {
        this.updater = updater;
    }

    public Date getUpdateTime() {
        return updateTime;
    }

    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }

    public Boolean isDeleted() {
        return isDeleted;
    }

    public void setDeleted(Boolean deleted) {
        isDeleted = deleted;
    }

    @Bindable
    public Boolean getCanPlay() {
        return canPlay;
    }

    public void setCanPlay(Boolean canPlay) {
        this.canPlay = canPlay;
        notifyPropertyChanged(BR.canPlay);
    }

    @Bindable
    public Boolean getCanDownload() {
        return canDownload;
    }

    public void setCanDownload(Boolean canDownload) {
        this.canDownload = canDownload;
        notifyPropertyChanged(BR.canDownload);
    }

    @Bindable
    public String getLocalPath() {
        return localPath;
    }

    public void setLocalPath(String localPath) {
        this.localPath = localPath;
        notifyPropertyChanged(BR.localPath);
    }

    @Bindable
    public Boolean getShowLoading() {
        return showLoading;
    }

    public void setShowLoading(Boolean showLoading) {
        this.showLoading = showLoading;
        notifyPropertyChanged(BR.showLoading);
    }

    @Bindable
    public Boolean getIsSelected() {
        return isSelected;
    }

    public void setIsSelected(Boolean isSelected) {
        this.isSelected = isSelected;
        notifyPropertyChanged(BR.isSelected);
    }
}